# phpMeccano - фреймворк для разработки веб-сервисов #

phpMeccano - модульно структурированный PHP фреймворк с открытым исходный кодом. Фреймворк phpMeccano предоставляет API co следующими возможностями:

* создание и управление группами пользователей;
* аутентификация пользователей, включая 2FA;
* контроль доступа к функциям через групповые политики;
* создание многоязычного интерфейса;
* копирование, перемещение и удаление локальных файлов и папок;
* ведение журнала событий;
* создание и обмен сообщениями и файлами между контактами пользователей по типу простой социальной сети;
* создание тем для обсуждения и комментирования;
* управление режимом обслуживания веб сервиса.

Система плагинов позволяет расширять функционал и добавлять новые возможности. Данная версия фреймворка является третьей альфа-версией.

## Требования ##

Для работы phpMeccano требуется веб-сервер (*Apache*, *NGINX* или *lighttpd*) с установленными и сконфигурированными PHP и MySQL/MariaDB.  
phpMeccano был протестирован со следующими окружениями:

* **Debian 10**
* Apache 2.4.38
* PHP 7.3.9 
* MariaDB 10.3.17

===================================

* **CentOS Linux 7**
* Apache 2.4.6
* PHP 5.4.16 
* MariaDB 5.5.64

===================================

* **Ubuntu 18.04**
* Apache 2.4.29
* PHP 7.2.19
* MySQL 5.7.27

===================================

* **Ubuntu 18.04**
* nginx/1.14.0
* PHP 7.2.19
* MySQL 8.0.17

===================================

* **Ubuntu 18.04**
* lighttpd/1.4.45
* PHP 7.2.19
* MySQL 8.0.17

Для запуcка веб-установщика следует использовать последние версии Firefox или Pale Moon; любого браузера, основанного на WebKit/Blink (Chromium, Google Chrome, Yandex Browser, Opera, Safari и т.д.); или Microsoft Edge. Веб-установщик был протестирован с десктопными, iOS и Android версиями браузеров.

## Установка ##

Убедитесь, что компоненты фреймворка размещены в директории доступной из сети. Затем отредактируйте файл *conf.php* и задайте параметры базы данных:

* **MECCANO_DBSTORAGE_ENGINE** - механизм хранения базы данных. Возможные значения: "*MyISAM*" и "*InnoDB*";
* **MECCANO_DBANAME** - имя администратора базы данных;
* **MECCANO_DBAPASS** - пароль администратора базы данных;
* **MECCANO_DBHOST** - хост базы данных;
* **MECCANO_DBPORT** - порт базы данных;
* **MECCANO_DBNAME** - имя базы данных;
* **MECCANO_TPREF** - префик таблиц базы данных.

Также, на своё усмотрение, вы можите отредактировать системные пути. Убедитесь, что веб-сервер имеет права на чтение/запись файлов и директорий.

Редактируя значение **MECCANO_DEF_LANG**, вы можете задать язык по умолчанию. Изначально возможные значения: "*en-US*" (Английский) и "*ru-RU*" (Русский).

*Для более подробной информации, обращайтесь к документации.*

Сохраните изменения.

Теперь откройте веб-браузер и перейдите по адресу ```http://hostname/install/```, чтобы запустить веб-установщик.

## Справочное руководство по API ##

Для получения справочной информации по API, пожалуйста, перейдите на wiki. Доступны версии на английском и на русском языках.

[Bitbucket](https://bitbucket.org/azexmail/phpmeccano/wiki)  
[GitHub](https://github.com/azex/phpmeccano/wiki)

## Пример кода ##

Для того, чтобы пройти аутентификацию, напишите следующий код:

```
#!php

<?php

header('Content-Type: text/html; charset=utf-8');

require_once 'conf.php';
\core\loadPHP('auth');

$db = \core\dbLink();
$auth = new \core\Auth($db);

$auth_code = $auth->userLogin("your_username", "your_password");
if (is_string($auth_code)) {
    if ($auth->login2FA($auth_code)) {
        echo "Вы прошли 2-факторную аутентификацию";
    }
    else {
        echo $auth->errExp();
    }
}
elseif ($auth_code) {
    echo "Вы прошли простую аутентификацию";
}
else {
    echo $auth->errExp();
}
```

## Лицензия ##

GNU General Public License, версия 2, или (на ваше усмотрение) любая более поздняя версия.
